// src/services/api.js
import axios from 'axios'
import { ElMessage } from 'element-plus'
import { apiBaseUrl } from '../utils/env'


// 创建 axios 实例
const api = axios.create({
  baseURL: apiBaseUrl,
  timeout: 10000,
  headers: {
    'Content-Type': 'application/json'
  }
})

// 请求拦截器
api.interceptors.request.use(
  (config) => {
    return config
  },
  (error) => {
    return Promise.reject(error)
  }
)

// 响应拦截器
api.interceptors.response.use(
  (response) => {
    return response.data
  },
  (error) => {
    const message = error.response?.data?.error || error.message || '请求失败'
    // 全局错误弹窗
    ElMessage.error(message)
    return Promise.reject(new Error(message))
  }
)

// API 方法
export const generateString = async (data) => {
  const response = await api.post('/generate', data)
  return response
}

export const getHistory = async (page = 1, limit = 10) => {
  const response = await api.get('/history', {
    params: { page, limit }
  })
  return response
}

export const clearHistory = async () => {
  const response = await api.delete('/history')
  return response
}

export const getCharTypes = async () => {
  try {
    const response = await api.get('/char-types')
    // 将后端返回的字符串数组转换为前端需要的对象数组格式
    const typeMapping = {
      'digits': '数字 (0-9)',
      'letters': '字母 (a-zA-Z)',
      'digits_letters': '数字 + 字母',
      'symbols': '符号 (!@#$%等)',
      'digits_letters_symbols': '数字 + 字母 + 符号',
      'chinese': '中文汉字',
      'custom': '自定义字符'
    }
    
    return response.char_types.map(type => ({
      value: type,
      label: typeMapping[type] || type
    }))
  } catch (error) {
    console.error('获取字符类型失败:', error)
    // 如果API调用失败，返回本地常量作为备选
    return [
      { value: 'digits', label: '数字 (0-9)' },
      { value: 'letters', label: '字母 (a-zA-Z)' },
      { value: 'digits_letters', label: '数字 + 字母' },
      { value: 'symbols', label: '符号 (!@#$%等)' },
      { value: 'digits_letters_symbols', label: '数字 + 字母 + 符号' },
      { value: 'chinese', label: '中文汉字' },
      { value: 'custom', label: '自定义字符' }
    ]
  }
}

export default api